home *** CD-ROM | disk | FTP | other *** search
/ Game.EXE 2001 January / Game.EXE_01_2001.iso / demos / Blade of Darkness / data1.cab / Program_Executable_Files / Lib / AuxFuncs.py < prev    next >
Encoding:
Text File  |  2000-11-16  |  19.8 KB  |  557 lines

  1. import Bladex
  2. import BInput
  3. import Raster
  4. import math
  5. import InitDataField
  6. import B3DLib
  7. import whrandom
  8. import ScriptSkip
  9. import darfuncs
  10.  
  11.  
  12.  
  13. def Normalize(vector):
  14.     return B3DLib.Normalize(vector)
  15.  
  16. def Scale(vector, scalar):    
  17.     return B3DLib.Scale(vector,scalar)
  18.  
  19. def Module(vector):    
  20.     return B3DLib.Modulo(vector[0], vector[1], vector[2])
  21.  
  22. def Pos2PosXZAngle(p1, p2):
  23.     return B3DLib.Pos2PosXZAngle(p1[0], p1[1], p1[2], p2[0], p2[1], p2[2])
  24.  
  25. ###############
  26.  
  27. def GetSpot(obj):
  28.     n_child=obj.GetNChildren()
  29.     for n in range(n_child):
  30.         child=Bladex.GetEntity(obj.GetChild(n))
  31.         if child.Kind=="Entity Spot":
  32.             return child
  33. #    print "El objeto "+obj.Name+" no tiene Spot"
  34.  
  35. def GetFire(obj):
  36.     n_child=obj.GetNChildren()
  37.     for n in range(n_child):
  38.         child=Bladex.GetEntity(obj.GetChild(n))
  39.         if child.Kind=="Entity Fire":
  40.             return child
  41. #    print "El objeto "+obj.Name+" no tiene Fire"
  42.  
  43. def SpotIntensityVariationGrad(light_name, time):
  44.     light=Bladex.GetEntity(light_name)
  45.     light.Intensity=light.Intensity+light.Data.AuxFuncsData.IntensityVar
  46.     if light.Data.AuxFuncsData.SizeVar:
  47.         light.SizeFactor=light.SizeFactor+light.Data.AuxFuncsData.SizeVar
  48.     if ((light.Data.AuxFuncsData.IntensityVar>=0.0 and light.Intensity>=light.Data.AuxFuncsData.EndIntensity) or (light.Data.AuxFuncsData.IntensityVar<0.0 and light.Intensity<=light.Data.AuxFuncsData.EndIntensity)):
  49.         if light.Data.AuxFuncsData.SizeVar:
  50.             light.SizeFactor=light.Data.AuxFuncsData.EndSize
  51.         light.Intensity=light.Data.AuxFuncsData.EndIntensity
  52.         light.RemoveFromList(light.Data.AuxFuncsData.Timer)
  53.         light.TimerFunc=""
  54.         if light.Data.AuxFuncsData.DestroyOnEnd:
  55.             light.SubscribeToList("Pin")
  56.  
  57. def SpotIntensityVariation(light_name, init_int, end_int, var_time, destroy=0, init_size=0.0, end_size=0.0, timer="Timer60", timespersec=60):
  58.     light=Bladex.GetEntity(light_name)
  59.     light.Intensity=init_int
  60.     InitDataField.Initialise(light)
  61.     light.Data.AuxFuncsData= ObjectAuxFuncsData()
  62.     light.Data.AuxFuncsData.EndIntensity=end_int
  63.     light.Data.AuxFuncsData.IntensityVar=(end_int-init_int)/(timespersec*var_time)
  64.     light.Data.AuxFuncsData.DestroyOnEnd=destroy
  65.     light.Data.AuxFuncsData.SizeVar=(end_size-init_size)/(timespersec*var_time)
  66.     light.Data.AuxFuncsData.EndSize=end_size
  67.     light.Data.AuxFuncsData.Timer=timer
  68.     if (init_size or end_size):
  69.         light.SizeFactor=init_size
  70.     light.TimerFunc=SpotIntensityVariationGrad
  71.     light.SubscribeToList(timer)
  72.  
  73.  
  74.  
  75. ###############
  76.  
  77. def DeactivateKeyboard():
  78.     #Flush current actions
  79.     #Bladex.SetCallCheck(1)
  80.     Bladex.DeactivateInput()
  81.     Bladex.ActivateInput()
  82.     InputManager=BInput.GetInputManager()
  83.     InputManager.AddInputActionsSet("EmptySet")
  84.     InputManager.SetInputActionsSet("EmptySet")
  85.  
  86.     Bladex.AddInputAction("Abort"  ,0)
  87.     
  88.     Bladex.AssocKey("Abort","Keyboard","Enter")
  89.     Bladex.AssocKey("Abort","Keyboard","Esc")
  90.     
  91.     Bladex.AddBoundFunc("Abort"    ,ScriptSkip.SkipCalled)
  92.  
  93. #    print "Desactivando teclado..."
  94.  
  95. def ActivateKeyboard():
  96.     IManager = BInput.GetInputManager()
  97.     IManager.SetInputActionsSet("EmptySet")
  98.     IActions=IManager.GetInputActions()
  99.     IAction = IActions.Find("Abort")
  100.     if IAction.Name()!="NULL":
  101.         IAction.RemoveAllEvents()
  102.         print "Removed 'Abort'"
  103.     
  104.     InputManager=BInput.GetInputManager()
  105.     InputManager.SetInputActionsSet("Default")
  106.     
  107. #    print "Activando teclado..."
  108.  
  109.  
  110. ###############
  111.  
  112. def StopCamTravelling(entity_name, camera_element, node):
  113.     global EndFunc
  114.     cam=Bladex.GetEntity("Camera")
  115.     if node==1:
  116.         cam.SType=0
  117.         cam.TType=0
  118.         cam.CameraClearPath(0)
  119.         cam.CameraClearPath(1)
  120.         if EndFunc:
  121.             EndFunc()
  122.  
  123. def MoveCamFromTo(ox1, oy1, oz1, ox2, oy2, oz2, tx1, ty1, tz1, tx2, ty2, tz2, time, endfunc=""):
  124.     global EndFunc
  125.     EndFunc=endfunc
  126.     cam=Bladex.GetEntity("Camera")
  127.     #Path objetivo
  128.     cam.AddCameraNode(0, time, ox1, oy1, oz1)
  129.     cam.AddCameraNode(0, time/2.0, ox2, oy2, oz2)
  130.     cam.AddCameraNode(0, time/2.0, (ox1+ox2)/2.0, (oy1+oy2)/2.0, (oz1+oz2)/2.0)
  131.     #Path target
  132.     cam.AddCameraNode(1, time, tx1, ty1, tz1)
  133.     cam.AddCameraNode(1, time/2.0, tx2, ty2, tz2)
  134.     cam.AddCameraNode(1, time/2.0, (tx1+tx2)/2.0, (ty1+ty2)/2.0, (tz1+tz2)/2.0)
  135.     cam.SType=1
  136.     cam.TType=1
  137.     cam.CameraStartPath(0)
  138.     cam.CameraStartPath(1)
  139.     cam.ChangeNodeFunc=StopCamTravelling
  140.  
  141. def ResetScene(cut=1, persndsrc=1, actinput=1):
  142.     cam=Bladex.GetEntity("Camera")
  143.     cam.SetPersonView("Player1")
  144.     if cut:
  145.         cam.Cut()
  146.     if persndsrc:
  147.         Bladex.SetListenerPosition(1)
  148.     if actinput:
  149.         Bladex.ActivateInput()
  150.  
  151.  
  152. ##################
  153.  
  154.  
  155. class ScreenFadeEffect:
  156.  
  157.     def __init__(self):
  158.         self.FadeTime=1.0
  159.         self.InitFadeTime=1.0
  160.         self.EndFadeTime=1.0
  161.         self.TotalFadeTime=2.0
  162.         self.RColor=0
  163.         self.GColor=0
  164.         self.BColor=0
  165.         self.InitAlpha=1.0
  166.         self.EndAlpha=0.0
  167.         self.AlphaVar=-1.0
  168.         self.InitTime=Bladex.GetTime()
  169.         self.ScreenSize=Raster.GetSize()
  170.  
  171. def Fade(time):
  172.     global fade_effect
  173.     if Bladex.GetAppMode()=="Menu":
  174.         return
  175.  
  176.     pass_time=time-fade_effect.InitTime
  177.     if pass_time<fade_effect.InitFadeTime:
  178.         alpha=fade_effect.InitAlpha
  179.     elif fade_effect.AlphaVar>0:
  180.         alpha=min(fade_effect.EndAlpha, fade_effect.InitAlpha+(pass_time-fade_effect.InitFadeTime)*fade_effect.AlphaVar/fade_effect.FadeTime)
  181.     else:
  182.         alpha=max(fade_effect.EndAlpha, fade_effect.InitAlpha+(pass_time-fade_effect.InitFadeTime)*fade_effect.AlphaVar/fade_effect.FadeTime)
  183.     Raster.SetFillColor(fade_effect.RColor, fade_effect.GColor, fade_effect.BColor)
  184.     Raster.SetAlpha(alpha)
  185.     Raster.SolidRectangle(0, 0, fade_effect.ScreenSize[0], fade_effect.ScreenSize[1])
  186.     if pass_time>=fade_effect.TotalFadeTime:
  187.         Bladex.RemoveAfterFrameFunc("Fade")
  188.  
  189. def FadeTo(fade_time=1.0, end_fade_time=1.0, rcolor=0, gcolor=0, bcolor=0):
  190.     global fade_effect
  191.     fade_effect=ScreenFadeEffect()
  192.     fade_effect.FadeTime=fade_time
  193.     fade_effect.InitFadeTime=0.0
  194.     fade_effect.EndFadeTime=end_fade_time
  195.     fade_effect.TotalFadeTime=fade_time+end_fade_time
  196.     fade_effect.RColor=rcolor
  197.     fade_effect.GColor=gcolor
  198.     fade_effect.BColor=bcolor
  199.     fade_effect.InitAlpha=0.0
  200.     fade_effect.EndAlpha=1.0
  201.     fade_effect.AlphaVar=1.0
  202.     Bladex.SetAfterFrameFunc("Fade", Fade)
  203.  
  204. def FadeFrom(fade_time=1.0, init_fade_time=1.0, rcolor=0, gcolor=0, bcolor=0):
  205.     global fade_effect
  206.     fade_effect=ScreenFadeEffect()
  207.     fade_effect.FadeTime=fade_time
  208.     fade_effect.InitFadeTime=init_fade_time
  209.     fade_effect.EndFadeTime=0.0
  210.     fade_effect.TotalFadeTime=fade_time+init_fade_time
  211.     fade_effect.RColor=rcolor
  212.     fade_effect.GColor=gcolor
  213.     fade_effect.BColor=bcolor
  214.     fade_effect.InitAlpha=1.0
  215.     fade_effect.EndAlpha=0.0
  216.     fade_effect.AlphaVar=-1.0
  217.     Bladex.SetAfterFrameFunc("Fade", Fade)
  218.  
  219. def FadeFromTo(init_alpha, end_alpha, fade_time=1.0, init_fade_time=1.0, end_fade_time=1.0, rcolor=0, gcolor=0, bcolor=0):
  220.     global fade_effect
  221.     fade_effect=ScreenFadeEffect()
  222.     fade_effect.FadeTime=fade_time
  223.     fade_effect.InitFadeTime=init_fade_time
  224.     fade_effect.EndFadeTime=end_fade_time
  225.     fade_effect.TotalFadeTime=fade_time+init_fade_time+end_fade_time
  226.     fade_effect.RColor=rcolor
  227.     fade_effect.GColor=gcolor
  228.     fade_effect.BColor=bcolor
  229.     fade_effect.InitAlpha=float(init_alpha)
  230.     fade_effect.EndAlpha=float(end_alpha)
  231.     fade_effect.AlphaVar=fade_effect.EndAlpha-fade_effect.InitAlpha
  232.     Bladex.SetAfterFrameFunc("Fade", Fade)
  233.  
  234. class SingleFrameScreenFadeEffect:
  235.  
  236.     def __init__(self):
  237.         self.RColor=0
  238.         self.GColor=0
  239.         self.BColor=0
  240.         self.ScreenSize=Raster.GetSize()
  241.  
  242. def SingleFrameFadeFunc(time):
  243.     global single_frame_fade_effect
  244.     if Bladex.GetAppMode()=="Menu":
  245.         return    
  246.     Raster.SetFillColor(single_frame_fade_effect.RColor, single_frame_fade_effect.GColor, single_frame_fade_effect.BColor)
  247.     Raster.SetAlpha(1.0)
  248.     Raster.SolidRectangle(0, 0, single_frame_fade_effect.ScreenSize[0], single_frame_fade_effect.ScreenSize[1])
  249.     Bladex.RemoveAfterFrameFunc("SingleFrameFadeFunc")
  250.  
  251. def SingleFrameFade(rcolor=0, gcolor=0, bcolor=0):
  252.     global single_frame_fade_effect
  253.     single_frame_fade_effect=SingleFrameScreenFadeEffect()
  254.     single_frame_fade_effect.RColor=rcolor
  255.     single_frame_fade_effect.GColor=gcolor
  256.     single_frame_fade_effect.BColor=bcolor
  257.     Bladex.SetAfterFrameFunc("SingleFrameFadeFunc", SingleFrameFadeFunc)
  258.  
  259.  
  260. #####################
  261.  
  262. # Destroy Methods
  263. DESTROY_METHOD_BIN= 1
  264. DESTROY_METHOD_REMOVE= 2
  265.  
  266. class ObjectAuxFuncsData:
  267.     InitAlpha= 0.0
  268.     EndAlpha= 0.0
  269.     AlphaVar= 0.0
  270.     AlphaInitVel= 0.0
  271.     AlphaAcc= 0.0
  272.     CurrentAlpha= 1.0
  273.     RVar= 0
  274.     GVar= 0
  275.     BVar= 0
  276.     EndColor=(0,0,0)
  277.     InitScale=1.0
  278.     ScaleVar= 0.0
  279.     EndScale= 1.0
  280.     ScaleAcc=0.0
  281.     ScaleInitVel= 0.0
  282.     WhileSclFunc= None
  283.     WhileSclArgs=()
  284.     EndSclFunc= None
  285.     EndSclArgs=()
  286.     AngleVar= 0
  287.     Axis= (0, 0, 1)
  288.     SizeVar= 1.0
  289.     EndSize= 1.0
  290.     CurrentSize= 1.0
  291.     IntensityVar= 0.0
  292.     EndIntensity= 0.0
  293.     Timer= "Timer30"
  294.     InitTime= 0
  295.     TotalTime= 0.0
  296.     OnEndFunc= None
  297.     OnEndArgs= ()
  298.     DestroyOnEnd= 0
  299.  
  300.  
  301. def FadeObjectGrad(obj_name, time):
  302.     obj=Bladex.GetEntity(obj_name)
  303.     obj.Alpha=obj.Alpha+obj.Data.AuxFuncsData.AlphaVar
  304.     if obj.Data.AuxFuncsData.AlphaVar>=0.0:
  305.         if obj.Alpha>=obj.Data.AuxFuncsData.EndAlpha:
  306.             obj.Alpha=obj.Data.AuxFuncsData.EndAlpha
  307.             obj.RemoveFromList("Timer60")
  308.             obj.TimerFunc=""
  309.     else:
  310.         if obj.Alpha<=obj.Data.AuxFuncsData.EndAlpha:
  311.             obj.Alpha=obj.Data.AuxFuncsData.EndAlpha
  312.             obj.RemoveFromList("Timer60")
  313.             obj.TimerFunc=""
  314.             if obj.Data.AuxFuncsData.DestroyOnEnd:
  315.                 if obj.Data.AuxFuncsData.DestroyOnEnd == DESTROY_METHOD_REMOVE:
  316.                     obj.RemoveFromWorld()
  317.                 if obj.Data.AuxFuncsData.DestroyOnEnd == DESTROY_METHOD_BIN:
  318.                     obj.SubscribeToList("Pin")
  319.  
  320. def FadeObject(obj_name, init_alpha, end_alpha, fade_time, destroy=0):
  321.     obj=Bladex.GetEntity(obj_name)
  322.     obj.Alpha=init_alpha
  323.     InitDataField.Initialise(obj)
  324.     obj.Data.AuxFuncsData= ObjectAuxFuncsData()
  325.     obj.Data.AuxFuncsData.EndAlpha=end_alpha
  326.     obj.Data.AuxFuncsData.AlphaVar=(end_alpha-init_alpha)/(60.0*fade_time)
  327.     obj.Data.AuxFuncsData.DestroyOnEnd=destroy
  328.     obj.TimerFunc=FadeObjectGrad
  329.     obj.SubscribeToList("Timer60")
  330.  
  331. def ColorObjectGrad(obj_name, time):
  332.     obj=Bladex.GetEntity(obj_name)
  333.     r,g,b= (obj.Color[0]+obj.Data.AuxFuncsData.RVar, obj.Color[1]+obj.Data.AuxFuncsData.GVar, obj.Color[2]+obj.Data.AuxFuncsData.BVar)
  334.     if obj.Data.AuxFuncsData.RVar>=0.0:
  335.         r= min(r,obj.Data.AuxFuncsData.EndColor[0])
  336.     else:
  337.         r= max(r,obj.Data.AuxFuncsData.EndColor[0])
  338.     if obj.Data.AuxFuncsData.GVar>=0.0:
  339.         g= min(g,obj.Data.AuxFuncsData.EndColor[1])
  340.     else:
  341.         g= max(g,obj.Data.AuxFuncsData.EndColor[1])
  342.     if obj.Data.AuxFuncsData.BVar>=0.0:
  343.         b= min(b,obj.Data.AuxFuncsData.EndColor[2])
  344.     else:
  345.         b= max(b,obj.Data.AuxFuncsData.EndColor[2])
  346.  
  347.     obj.Color= (r,g,b)
  348.     if r==obj.Data.AuxFuncsData.EndColor[0] and g==obj.Data.AuxFuncsData.EndColor[1] and b==obj.Data.AuxFuncsData.EndColor[2]:
  349.         obj.RemoveFromList("Timer60")
  350.         obj.TimerFunc=""
  351.         if obj.Data.AuxFuncsData.DestroyOnEnd:
  352.             if obj.Data.AuxFuncsData.DestroyOnEnd & DESTROY_METHOD_REMOVE:
  353.                 obj.RemoveFromWorld()
  354.             if obj.Data.AuxFuncsData.DestroyOnEnd & DESTROY_METHOD_BIN:                
  355.                 obj.SubscribeToList("Pin")
  356.  
  357.  
  358. def ColorObject(obj_name, init_color, end_color, fade_time, destroy=0):
  359.     obj=Bladex.GetEntity(obj_name)
  360.     init_r= min(max(init_color[0],0),255) 
  361.     init_g= min(max(init_color[1],0),255) 
  362.     init_b= min(max(init_color[2],0),255)
  363.     end_r= min(max(end_color[0],0),255) 
  364.     end_g= min(max(end_color[1],0),255) 
  365.     end_b= min(max(end_color[2],0),255)
  366.     obj.Color= (init_r, init_g, init_b)
  367.     InitDataField.Initialise(obj)
  368.     obj.Data.AuxFuncsData= ObjectAuxFuncsData()
  369.     obj.Data.AuxFuncsData.EndColor= (end_r, end_g, end_b)
  370.     obj.Data.AuxFuncsData.RVar=(end_color[0]-init_color[0])/(60.0*fade_time)
  371.     obj.Data.AuxFuncsData.GVar=(end_color[1]-init_color[1])/(60.0*fade_time)
  372.     obj.Data.AuxFuncsData.BVar=(end_color[2]-init_color[2])/(60.0*fade_time)
  373.     obj.Data.AuxFuncsData.DestroyOnEnd=destroy
  374.     obj.TimerFunc=ColorObjectGrad
  375.     obj.SubscribeToList("Timer60")
  376.  
  377.  
  378. def ScaleObjectGrad(obj_name, time):
  379.     obj=Bladex.GetEntity(obj_name)
  380.     obj.Scale=obj.Scale+obj.Data.AuxFuncsData.ScaleVar
  381.     if obj.Data.AuxFuncsData.ScaleVar>=0.0:
  382.         if obj.Scale>=obj.Data.AuxFuncsData.EndScale:
  383.             obj.Scale=obj.Data.AuxFuncsData.EndScale
  384.             obj.RemoveFromList("Timer60")
  385.             obj.TimerFunc=""
  386.     else:
  387.         if obj.Scale<=obj.Data.AuxFuncsData.EndScale:
  388.             obj.Scale=obj.Data.AuxFuncsData.EndScale
  389.             obj.RemoveFromList("Timer60")
  390.             obj.TimerFunc=""
  391.  
  392. def ScaleObject(obj_name, init_scale, end_scale, scale_time):
  393.     obj=Bladex.GetEntity(obj_name)
  394.     obj.Scale=init_scale
  395.     InitDataField.Initialise(obj)
  396.     obj.Data.AuxFuncsData= ObjectAuxFuncsData()
  397.     obj.Data.AuxFuncsData.EndScale=end_scale
  398.     obj.Data.AuxFuncsData.ScaleVar=(end_scale-init_scale)/(60.0*scale_time)
  399.     obj.TimerFunc=ScaleObjectGrad
  400.     obj.SubscribeToList("Timer60")
  401.  
  402.  
  403. def GlowSizeVariationGrad(light_name, time):
  404.     light=Bladex.GetEntity(light_name)
  405.     light.SizeFactor=light.SizeFactor+light.Data.AuxFuncsData.SizeVar
  406.     if ((light.Data.AuxFuncsData.SizeVar>=0.0) and (light.SizeFactor>=light.Data.AuxFuncsData.EndSize)) or ((light.Data.AuxFuncsData.SizeVar<0.0) and (light.SizeFactor<=light.Data.AuxFuncsData.EndSize)):
  407.         light.SizeFactor=light.Data.AuxFuncsData.EndSize
  408.         light.RemoveFromList("Timer30")
  409.         light.TimerFunc=""
  410.         if light.Data.AuxFuncsData.DestroyOnEnd:
  411.             light.SubscribeToList("Pin")
  412.  
  413. def GlowSizeVariation(light_name, init_size, end_size, var_time, destroy=0):
  414.     light=Bladex.GetEntity(light_name)
  415.     light.SizeFactor=init_size
  416.     InitDataField.Initialise(light)
  417.     light.Data.AuxFuncsData= ObjectAuxFuncsData()
  418.     light.Data.AuxFuncsData.EndSize=end_size
  419.     light.Data.AuxFuncsData.SizeVar=(end_size-init_size)/(30.0*var_time)
  420.     light.Data.AuxFuncsData.DestroyOnEnd=destroy
  421.     light.TimerFunc=GlowSizeVariationGrad
  422.     light.SubscribeToList("Timer30")
  423.  
  424.  
  425. def FadeAndScaleAuraGrad(ent_name, time):
  426.     aura=Bladex.GetEntity(ent_name)
  427.     aura.Data.AuxFuncsData.CurrentSize=aura.Data.AuxFuncsData.CurrentSize+aura.Data.AuxFuncsData.SizeVar
  428.     aura.Data.AuxFuncsData.CurrentAlpha=aura.Data.AuxFuncsData.CurrentAlpha+aura.Data.AuxFuncsData.AlphaVar
  429.     if aura.Data.AuxFuncsData.CurrentAlpha<0.0:
  430.         aura.Data.AuxFuncsData.CurrentAlpha=0.0
  431.     elif aura.Data.AuxFuncsData.CurrentAlpha>1.0:
  432.         aura.Data.AuxFuncsData.CurrentAlpha=1.0
  433.     aura.SetAuraParams(aura.Data.AuxFuncsData.CurrentSize, aura.Data.AuxFuncsData.CurrentAlpha, 1, 0, 0, 1)
  434.     if ((aura.Data.AuxFuncsData.SizeVar>0 and aura.Data.AuxFuncsData.CurrentSize>=aura.Data.AuxFuncsData.EndSize) or (aura.Data.AuxFuncsData.SizeVar<0 and aura.Data.AuxFuncsData.CurrentSize<=aura.Data.AuxFuncsData.EndSize)):
  435.         aura.RemoveFromList(aura.Data.AuxFuncsData.Timer)
  436.         aura.TimerFunc=""
  437.         if aura.Data.AuxFuncsData.DestroyOnEnd:
  438.             aura.SubscribeToList("Pin")
  439.         else:
  440.             aura.SetAuraParams(aura.Data.AuxFuncsData.EndSize, aura.Data.AuxFuncsData.EndAlpha, 1, 0, 0, 1)
  441.         if aura.Data.AuxFuncsData.OnEndFunc:
  442.             apply(aura.Data.AuxFuncsData.OnEndFunc, aura.Data.AuxFuncsData.OnEndArgs)
  443.  
  444. def FadeAndScaleAura(aura_name, init_size, end_size, init_alpha, end_alpha, time, destroy=0, OnEndFunc="", OnEndArgs=(), timer="Timer30", timespersec=30):
  445.     aura=Bladex.GetEntity(aura_name)
  446.     InitDataField.Initialise(aura)
  447.     aura.Data.AuxFuncsData= ObjectAuxFuncsData()
  448.     aura.Data.AuxFuncsData.CurrentSize=init_size
  449.     aura.Data.AuxFuncsData.EndSize=end_size
  450.     aura.Data.AuxFuncsData.SizeVar=(end_size-init_size)/(time*timespersec)
  451.     aura.Data.AuxFuncsData.CurrentAlpha=init_alpha
  452.     aura.Data.AuxFuncsData.EndAlpha=end_alpha
  453.     aura.Data.AuxFuncsData.AlphaVar=(end_alpha-init_alpha)/(time*timespersec)
  454.     aura.Data.AuxFuncsData.DestroyOnEnd=destroy
  455.     aura.Data.AuxFuncsData.OnEndFunc=OnEndFunc
  456.     aura.Data.AuxFuncsData.OnEndArgs=OnEndArgs
  457.     aura.Data.AuxFuncsData.Timer=timer
  458.     aura.TimerFunc=FadeAndScaleAuraGrad
  459.     aura.SubscribeToList(timer)
  460.  
  461.  
  462. def FadeAndScaleGrad(obj_name, time):
  463.     obj=Bladex.GetEntity(obj_name)
  464.     curr_time=Bladex.GetTime()-obj.Data.AuxFuncsData.InitTime
  465.     obj.Alpha=obj.Data.AuxFuncsData.InitAlpha+obj.Data.AuxFuncsData.AlphaInitVel*curr_time+0.5*obj.Data.AuxFuncsData.AlphaAcc*curr_time**2
  466.     obj.Scale=obj.Data.AuxFuncsData.InitScale+obj.Data.AuxFuncsData.ScaleInitVel*curr_time+0.5*obj.Data.AuxFuncsData.ScaleAcc*curr_time**2
  467.     if obj.Data.AuxFuncsData.AngleVar:
  468.         x, y, z=obj.Data.AuxFuncsData.Axis
  469.         ang=whrandom.uniform(-obj.Data.AuxFuncsData.AngleVar, obj.Data.AuxFuncsData.AngleVar)
  470.         obj.RotateRel(0, 0, 0, x, y, z, ang)
  471.     if curr_time>=obj.Data.AuxFuncsData.TotalTime:
  472.         obj.Alpha=obj.Data.AuxFuncsData.EndAlpha
  473.         obj.Scale=obj.Data.AuxFuncsData.EndScale
  474.         obj.RemoveFromList("Timer30")
  475.         obj.TimerFunc=""
  476.         if obj.Data.AuxFuncsData.DestroyOnEnd==DESTROY_METHOD_BIN:
  477.             obj.SubscribeToList("Pin")
  478.         elif obj.Data.AuxFuncsData.DestroyOnEnd==DESTROY_METHOD_REMOVE:
  479.             obj.RemoveFromWorld()
  480.  
  481. def FadeAndScale(obj_name, pos, init_alpha, end_alpha, alpha_acc, init_scl, end_scl, scl_acc, time, ang_var=0, destroy=0, axis=(0, 0, 1)):
  482.     obj=Bladex.GetEntity(obj_name)
  483.     obj.Alpha=init_alpha
  484.     obj.Scale=init_scl
  485.     obj.Position=pos
  486.     InitDataField.Initialise(obj)
  487.     obj.Data.AuxFuncsData= ObjectAuxFuncsData()
  488.     obj.Data.AuxFuncsData.InitAlpha=init_alpha
  489.     obj.Data.AuxFuncsData.EndAlpha=end_alpha
  490.     obj.Data.AuxFuncsData.AlphaAcc=alpha_acc*2.0*(end_alpha-init_alpha)/time**2
  491.     obj.Data.AuxFuncsData.AlphaInitVel=(end_alpha-init_alpha-alpha_acc*(end_alpha-init_alpha))/time
  492.     obj.Data.AuxFuncsData.InitScale=init_scl
  493.     obj.Data.AuxFuncsData.EndScale=end_scl
  494.     obj.Data.AuxFuncsData.ScaleAcc=scl_acc*2.0*(end_scl-init_scl)/time**2
  495.     obj.Data.AuxFuncsData.ScaleInitVel=(end_scl-init_scl-scl_acc*(end_scl-init_scl))/time
  496.     obj.Data.AuxFuncsData.AngleVar=ang_var
  497.     obj.Data.AuxFuncsData.Axis=axis
  498.     obj.Data.AuxFuncsData.DestroyOnEnd=destroy
  499.     obj.Data.AuxFuncsData.InitTime=Bladex.GetTime()
  500.     obj.Data.AuxFuncsData.TotalTime=time
  501.     obj.TimerFunc=FadeAndScaleGrad
  502.     obj.SubscribeToList("Timer30")
  503.  
  504.  
  505. def ScaleObjectV2Grad(obj_name, time):
  506.     obj=Bladex.GetEntity(obj_name)
  507.     curr_time=Bladex.GetTime()-obj.Data.AuxFuncsData.InitTime
  508.     obj.Scale=obj.Data.AuxFuncsData.InitScale+obj.Data.AuxFuncsData.ScaleInitVel*curr_time+0.5*obj.Data.AuxFuncsData.ScaleAcc*curr_time**2
  509.     if obj.Data.AuxFuncsData.WhileSclFunc:
  510.         apply(obj.Data.AuxFuncsData.WhileSclFunc, obj.Data.AuxFuncsData.WhileSclArgs)
  511.     if curr_time>=obj.Data.AuxFuncsData.TotalTime:
  512.         obj.Scale=obj.Data.AuxFuncsData.EndScale
  513.         obj.RemoveFromList("Timer30")
  514.         obj.TimerFunc=""
  515.         if obj.Data.AuxFuncsData.EndSclFunc:
  516.             apply(obj.Data.AuxFuncsData.EndSclFunc, obj.Data.AuxFuncsData.EndSclArgs)
  517.         if obj.Data.AuxFuncsData.DestroyOnEnd==DESTROY_METHOD_BIN:
  518.             obj.SubscribeToList("Pin")
  519.         elif obj.Data.AuxFuncsData.DestroyOnEnd==DESTROY_METHOD_REMOVE:
  520.             obj.RemoveFromWorld()
  521.  
  522. def ScaleObjectV2(obj_name, init_scl, end_scl, scl_acc, time, WhileSclFunc="", WhileSclArgs=(), EndSclFunc="", EndSclArgs=(), destroy=0):
  523.     obj=Bladex.GetEntity(obj_name)
  524.     obj.Scale=init_scl
  525.     InitDataField.Initialise(obj)
  526.     obj.Data.AuxFuncsData= ObjectAuxFuncsData()
  527.     obj.Data.AuxFuncsData.InitScale=init_scl
  528.     obj.Data.AuxFuncsData.EndScale=end_scl
  529.     obj.Data.AuxFuncsData.ScaleAcc=scl_acc*2.0*(end_scl-init_scl)/time**2
  530.     obj.Data.AuxFuncsData.ScaleInitVel=(end_scl-init_scl-scl_acc*(end_scl-init_scl))/time
  531.     obj.Data.AuxFuncsData.WhileSclFunc=WhileSclFunc
  532.     obj.Data.AuxFuncsData.WhileSclArgs=WhileSclArgs
  533.     obj.Data.AuxFuncsData.EndSclFunc=EndSclFunc
  534.     obj.Data.AuxFuncsData.EndSclArgs=EndSclArgs
  535.     obj.Data.AuxFuncsData.DestroyOnEnd=destroy
  536.     obj.Data.AuxFuncsData.InitTime=Bladex.GetTime()
  537.     obj.Data.AuxFuncsData.TotalTime=time
  538.     obj.TimerFunc=ScaleObjectV2Grad
  539.     obj.SubscribeToList("Timer30")
  540.  
  541.  
  542.  
  543.  
  544.  
  545. #########################################
  546. ###     Objetos estaticos que queman
  547. #########################################
  548.  
  549.  
  550. def SetRadialFireDamageObject(object_name, radius=500.0, floor_displ=1000.0, roof_displ=2000.0):
  551.     x, y, z = Bladex.GetEntity(object_name).Position
  552.     dx=radius/2.0
  553.     dz=radius*((math.sqrt(3.0))/2.0)
  554.     trsector_name=object_name+"_TrSectorFire"
  555.     Bladex.AddTriggerSector(trsector_name, "SectoresTriggerFuego", y+floor_displ, y-roof_displ, [(x+dx, z+dz), (x-dx, z+dz), (x-radius, z), (x-dx, z-dz), (x+dx, z-dz), (x+radius, z)])
  556.     darfuncs.FireOnGS(trsector_name)
  557.